package com.dmp.storm.bolt.esper;//package com.dmp.storm.bolt.esper;
//
//import backtype.storm.tuple.Values;
//import com.espertech.esper.client.*;
//import com.dmp.storm.bolt.BaseMapBolt;
//import com.dmp.util.EsperUtil;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * Created by wangqiang on 2016/3/1.
// */
//public abstract class BaseEsperBolt extends BaseMapBolt {
//
//    private static final long serialVersionUID = 1L;
//    Logger logger = LoggerFactory.getLogger(BaseEsperBolt.class);
//
//    private String propEPL; //xml定义参数
//    private EPServiceProvider epService;
//    private String keyword;
//    Map<String, Object> _result = null;
//
//    @Override
//    public void prepare() {
//        initEsper();
//    }
//
//    @Override
//    public Map<String, Object> process(Map<String, Object> map) {
//        long beginTime = System.currentTimeMillis();
//
//        //处理数据为esper制定格式
//        Object obj = initData(map);
//        if (obj != null) {
//            epService.getEPRuntime().sendEvent(obj);
//        }
//
//
//        // end time
//        long endTime = System.currentTimeMillis();
//        float excTime = (float) (endTime - beginTime);
//        logger.info("{schedule_out_put:[TIME INFO]BaseEsperBolt:beginTime:{},endTime:{},excTime:{}}", beginTime, endTime, excTime);
//
//        return null;
//    }
//
//    private void initEsper() {
//        try {
//            Configuration configuration = new Configuration();
//            configuration.addEventTypeAutoName("com.dmp.adschedule.event");
//
//            epService = EPServiceProviderManager.getDefaultProvider(configuration);
//            epService.initialize();
//            EPStatement visitorsStatement = epService.getEPAdministrator().createEPL(propEPL);
//
//            visitorsStatement.addListener(new UpdateListener() {
//
//                @Override
//                public void update(EventBean[] newEvents, EventBean[] oldEvents) {
//                    if (newEvents != null && newEvents[0] != null) {
//                        _result = dealResultData(newEvents, oldEvents);
//                        collector.emit(new Values(_result, keyword));
//                        logger.info("{schedule_out_put:BaseEsperBolt:---->send bolt:{}}", _result);
//                    }
//                }
//
//            });
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw e;
//        }
//    }
//
//    /**
//     * 处理数据为esper制定格式
//     *
//     * @param map
//     * @return
//     */
//    public abstract Object initData(Map<String, Object> map);
//
//    /**
//     * 处理事件流
//     *
//     * @param newEvents
//     * @param oldEvents
//     * @return
//     */
//    public abstract Map<String, Object> dealResultData(EventBean[] newEvents, EventBean[] oldEvents);
//
//    public String getPropEPL() {
//        return propEPL;
//    }
//
//    public void setPropEPL(String propEPL) {
//        this.propEPL = propEPL;
//    }
//}
